package com.niuwa.p2p.dao.role;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import com.niuwa.p2p.dao.MyBatisDao;
import com.niuwa.p2p.entity.role.Role;


@MyBatisDao
public interface RoleDao {
	/**
	 * 新增角色
	 * @param role
	 * @return
	 * @throws SQLException
	 */
	public int saveRole(Role role);
	
	/**
	 * 修改角色
	 * @param role
	 * @return
	 */
	public int updateRole(Role role) ;
	
	/**
	 * 获取符合条件的角色数
	 * @param paramMap
	 * @return
	 */
	public int getRoleCountByCondition(Map<String, Object> paramMap);
	/**
	 * 获取符合条件的角色列表
	 * @return
	 * @throws SQLException
	 */
	public List<Role> getRoleByCondition(Map<String, Object> paramMap);
	
	/**
	 * 根据主键Id获取角色信息
	 * @param id
	 * @return
	 */
	public Role getRoleById(Integer roleId);
	
	/**
	 * 判断角色名称是否已经存在
	 * @param roleName
	 * @return
	 */
	public Object checkRoleNameIsExists(String roleName);
	
	/**
	 * 更改角色状态
	 * @param role
	 * @return
	 */
	public int changeRoleStatus(Integer roleId);

	
	/**
	 * 查询全部的角色
	 * @return
	 */
	public List<Role>  searchAllRoles();
	
	/**
	 * 根据资源ID查询角色
	 * @param ResourceId
	 * @return
	 */
	public List<Role>  getRolesByResourceId(Integer resourceId);
	
	
	/**
	 * 
	 *根据用户名查询对应角色
	 *@param loginName
	 *@return List<Role>
	 *
	 */
	public List<Role> searchRolesByloginName(String loginName);
	
	
	/**
	 * 
	 *根据ROLEID删除角色对应的用户关系
	 * @param roleId
	 *
	 */
	public void deleteUserRole(Integer roleId);
	
	
	/**
	 * 
	 *根据ROLEID删除角色对应的权限关系
	 * @param roleId
	 *
	 */
	public void deleteRoleResource(Integer roleId);
	
	/**
	*根据ROLEID查询角色对应的用户关系
	 * @param roleId
	 * @return
	 *
	 */
	public List<Map<String,Object>> searchUserRoleByRoleId(Integer roleId);
	
	/**
	 * 
	 *根据ROLEID查询角色对应的权限关系
	 * @param roleId
	 *
	 */
	public List<Map<String,Object>> searchRoleResourceByRoleId(Integer roleId);
	
	
	/**
	 * 判断角色名称是否已经存在
	 * @param roleName
	 * @return
	 */
	
	public List<Role> searchRoleByName(String roleName);
	
	
	/**
	 * 
	 *新增角色
	 * @param roleParamMap
	 *
	 */
	public void addRole(Map<String,Object>roleParamMap);
	
	
	
	/**
	 * 
	 *修改角色
	 * @param roleParamMap
	 *
	 */
   public void updateRole(Map<String,Object>roleParamMap);
   
   
	   /**
	    * 
	    *根据用户Id删除对应角色
	    * @param userId
	    *
	    */
	   public void deleteUserRoleByUserId(Integer userId);
		   
	/**
	 * 
	 *根据用户ID插入对应的角色
	 * @param userId
	 * @param roleIdArr
	 *
	 */
	   public void insertUserRole(Map<String,Object>  userRoleMap );
		
	}
